package com.QQ.service;

import com.QQ.qqcommon.Message;
import com.QQ.qqcommon.MessageType;

import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.Socket;

//该类对应的对象和莫个客户端保持通信
public class ServerConnectClientThread extends Thread{

    private Socket socket;
    private  String userId;//连接到客户端的用户id

    public ServerConnectClientThread(Socket socket, String userId) {
        this.socket = socket;
        this.userId = userId;
    }

    @Override
    public void run() {//线程处于run状态，可以发送/接受消息
        while (true){
            try {
                System.out.println("服务端和客户端保持通信，"+userId+"读取数据。。。");
                ObjectInputStream ois = new ObjectInputStream(socket.getInputStream());
                Message message=(Message) ois.readObject();
                //后面会使用Message 根据message的类型，做相应的业务处理
                if (message.getMesType().equals(MessageType.MESSAGE_GET_ONLINE_FRIEND)){
                    //客户端要在线用户列表
                    /*
                    在线用户列表形式 100 200  紫霞仙子
                     */
                    System.out.println(message.getSender()+" 要在线用户列表");
                    String onlineUser = ManagerClientThreads.getOnlineUser();
                    //返回message
                    //构建一个Message 对象， 返回给客户端
                    Message message2 = new Message();
                    message2.setMesType(MessageType.MESSAGE_GET_ONLINE_FRIEND);
                    message2.setContent(onlineUser);
                    message2.setGetter(message.getSender());
                    //返回给客户端
                    ObjectOutputStream oos = new ObjectOutputStream(socket.getOutputStream());
                    oos.writeObject(message2);
                }else{
                    System.out.println("其他类型的message，暂且不做处理。。。");
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
}
